export function debounce(fn: any, time = 500) {
  // 创建一个标记用来存放定时器的返回值
  let timeout: any = null
  return function (this: any, ...args: any[]) {
    // 每次调用方法时，把前一个定时器清除
    clearTimeout(timeout)
    // 然后创建一个新的 setTimeout，
    // 这样就能保证点击按钮后的 interval 间隔内
    // 如果用户还点击了的话，就不会执行 fn 函数
    timeout = setTimeout(() => {
      fn.call(this, args)
    }, time)
  }
}